#ifndef NODE_H
#define NODE_H

//#include "element.h"

#include <iostream>

// Resolve circular dependency issue caused by the
// bi-directionnal association between Node and Element
class XmlElement;

class Node {

public:
	
	Node();
	Node(const Node& e);
	virtual ~Node();
	
	XmlElement* getParent();
	
	void setParent(XmlElement *parent);
	
	virtual void print(std::ostream& out) = 0;
	virtual Node* clone() const = 0;
private:

	XmlElement* mParent;
};

#endif //NODE_H
